package exercicios.ex08.model;

import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class FaceNoteFachada {
	private Map<Integer, Post> posts;
	static FaceNoteFachada instance;
	private int lastId = 1;

	public FaceNoteFachada() {
		super();
		posts = new HashMap<Integer, Post>();
		fakeInit();
	}

	private void fakeInit() {
		posts.put(1, new Post(1, "João", "Este é o seu primeiro post!"));
		posts.put(2, new Post(2, "Pedro", "A materia de Servlets é muito fácil, já fiz todos os exercícios"));
		Post novo = new Post(3, "Maria", "A prova de Desenvolvimento de Sist. Web vai ser moleza");
		novo.addCompentario(new Comentario("João", "Mas, é bom começar a estudar o quanto antes"));
		novo.addCompentario(new Comentario("Pedro", "Eu já comecei, quem quiser umas dicas é só me procurar"));
		novo.addCompentario(new Comentario("Ana", "Eu vou precisar, vamos marcar um dia para estudar"));
		posts.put(3, novo);
		posts.put(4, new Post(4, "Ana", "Que venha o quarto período, pois o monstro do terceiro período não é tão feio"));
		posts.put(5, new Post(5, "Maria", "Muito facil esse exercício"));
		posts.put(6, new Post(6, "Pedro", "Prova prática no Eclipse torna tudo mais fácil"));
		posts.put(7, new Post(7, "João", "Já estou estudando para prova, vou pagar essa por média"));
		this.lastId = 8;
	}

	public static FaceNoteFachada getInstance() {
		if (instance == null) {
			instance = new FaceNoteFachada();
		}
		return instance;
	}

	public List<Post> getPosts() {
		ArrayList<Post> lista = new ArrayList<Post>(posts.values());
		Collections.reverse(lista);
		return lista; 
	}
	
	public void addPost(String autor, String mensagem) {
		posts.put(lastId, new Post(lastId, autor, mensagem));
		lastId++;
	}

	public void curtir(String idPost) { 
		posts.get(Integer.parseInt(idPost)).curtir();
	}

	public void comentar(String idPost, String autor, String comentario) {
		posts.get(Integer.parseInt(idPost)).addCompentario(new Comentario(autor, comentario));
	}
}
